Skip to content

Add sticky tree item support#115697

Open
dugramen wants to merge 1 commit intogodotengine:masterfrom
dugramen:sticky-tree-canvas-item
Open

Add sticky tree item support#115697
dugramen wants to merge 1 commit intogodotengine:masterfrom
dugramen:sticky-tree-canvas-item

Conversation

@dugramen
Copy link
Copy Markdown

@dugramen dugramen commented Feb 1, 2026

addresses godotengine/godot-proposals#13998 for Trees

Video demo:

2026-01-31.20-06-23.mp4

@dugramen dugramen requested a review from a team as a code owner February 1, 2026 01:56
@dugramen dugramen requested a review from a team February 1, 2026 01:56
@dugramen dugramen requested a review from a team as a code owner February 1, 2026 01:56
@llama-nl
Copy link
Copy Markdown

llama-nl commented Feb 1, 2026

tested it on Android, I am having a problem when use multiple nested node:

az_recorder_20260201_082540_edited.mp4

@dugramen
Copy link
Copy Markdown
Author

dugramen commented Feb 1, 2026

Ah right. It currently sticks at an unlimited depth. Maybe I can just hard cap it to the last few elements. Or maybe up to like half of the full height

Edit: looks like it's not horizontally scrolling either. I'll have to fix that

@AdriaandeJongh
Copy link
Copy Markdown
Contributor

if you cap the depth and that depth is reached, will from that point on the sticky headers also scroll again as if normal? because if they remain sticky, that might be very confusing…

@dugramen
Copy link
Copy Markdown
Author

dugramen commented Feb 1, 2026

I think they could show another scroll hint shadow at the top, to indicate there's more sticky elements. Or maybe have like a ... item at the top?

Edit: nvm I realize the issue with capping to the last elements. It would make items jump to the top. It's probably better to cap to the first few elements instead

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from f68a535 to d818429 Compare February 1, 2026 15:26
@dugramen
Copy link
Copy Markdown
Author

dugramen commented Feb 1, 2026

Ok I changed the setting to enable sticky items to an int, providing the maximum number of sticky elements. Horizontal scrolling should also work now.

2026-02-01.10-20-54.mp4

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from d818429 to 8f6ee21 Compare February 1, 2026 15:39
Comment thread scene/gui/tree.cpp Outdated
@@ -6847,6 +6923,9 @@ void Tree::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_auto_tooltip", "enable"), &Tree::set_auto_tooltip);
ClassDB::bind_method(D_METHOD("is_auto_tooltip_enabled"), &Tree::is_auto_tooltip_enabled);

ClassDB::bind_method(D_METHOD("set_max_sticky_items", "enable"), &Tree::set_max_sticky_items);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ClassDB::bind_method(D_METHOD("set_max_sticky_items", "enable"), &Tree::set_max_sticky_items);
ClassDB::bind_method(D_METHOD("set_max_sticky_items", "count"), &Tree::set_max_sticky_items);

Comment thread doc/classes/Tree.xml Outdated
@@ -383,6 +383,9 @@
<member name="hide_root" type="bool" setter="set_hide_root" getter="is_root_hidden" default="false">
If [code]true[/code], the tree's root is hidden.
</member>
<member name="max_sticky_items" type="int" setter="set_max_sticky_items" getter="get_max_sticky_items" default="0">
The maximum number of tree items allowed to stick to the top while its children are still in view.
Copy link
Copy Markdown
Contributor

@Naros Naros Feb 2, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If setting this to 0 is to imply the feature is disabled, there should be a note and/or sentence here that indicates calling the method with 0 disables the feature, and the Tree works as it did prior to this feature being added, particularly for EditorPlugin authors who may not want this to be enabled.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that it could be nice to specify that explicitly. However, unless I'm misunderstanding, I think that would be the implied result of this being 0 anyways? As in, zero tree items would be allowed to stick to the top while children are in view?

Comment thread scene/gui/tree.h Outdated
Comment thread scene/gui/tree.h Outdated
Comment thread scene/gui/tree.cpp Outdated
Comment thread scene/gui/tree.cpp Outdated
Comment thread scene/gui/tree.cpp Outdated
Comment thread doc/classes/Tree.xml Outdated
@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from 8f6ee21 to 7f407d7 Compare February 3, 2026 17:02
@dugramen
Copy link
Copy Markdown
Author

dugramen commented Feb 3, 2026

pushed the changes and explicitly mentioned that a max of 0 disables sticking, just in case

Copy link
Copy Markdown
Contributor

@Naros Naros left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll defer to AThousandShips on the language, but LGTM.

@Repiteo Repiteo requested a review from a team as a code owner February 17, 2026 20:09
@Kazox61
Copy link
Copy Markdown
Contributor

Kazox61 commented Feb 26, 2026

Tested the latest version and it works as expected.

@AdriaandeJongh AdriaandeJongh self-requested a review February 26, 2026 11:02
Copy link
Copy Markdown
Contributor

@AdriaandeJongh AdriaandeJongh left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Played around with this and think this is a great feature in general. A few notes:

  • I was unable to raise the sticky count above 6. Why not? IMO it should be able to go to a large number just because it will enable this UX improvement on various specific workflows. Even in Rift Riff's settings screen I easily hit 6 layers of organization deep and it wasn't enough. I suggest having a maximum of 16.

  • Looking at the trees in my commercial-game-grade projects, I think the default maximum sticky items of 3 is too low making the sticky headers less useful than they can be. The point of that number is to avoid infinite sticky items and filling the entire panel with stickies making the panel unusable.
    -- It's not trivial to land on a better number without making assumptions about some sort of median height of Godot user's scene panel.
    -- ... but making assumptions based on my experience with the editor, 5 would be a better default.

  • I'm not sure yet whether this should be improved and how it even could be improved, but at the core of the sticky header is that it 'hides' all the in-between nodes that are not the shortest path to root. However, there is currently no visual indication of when there are nodes in between the sticky ones or not. For example, in the video below, there is no visual indication that Control1 exists when Control2 sticks to the top:

Screen.Recording.2026-02-27.at.10.57.21.mp4

But like I said, I'm not sure we can and should address this. My first thought would be to add a tiny indicator like this one Image and stick it in between all the edges that hide nodes... but it'll very soon can crammed with all those icons, so I don't even like that solution much.

  • And finally, here's a few screenshots of a bunch of trees in Rift Riff showing how much more readable the tree becomes after this change – as well as notice that a few more stickied items above 6 would have been convenient for us:
Image Image Image

Comment thread editor/settings/editor_settings.cpp Outdated
Comment thread doc/classes/Tree.xml Outdated
Comment thread doc/classes/EditorSettings.xml Outdated
@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from 7f407d7 to 3756d07 Compare February 27, 2026 15:35
@dugramen
Copy link
Copy Markdown
Author

I pushed the suggestions. As for indicating when it reached its sticking limit, I feel like the difference in indentation between the normal and stuck content kind of does that already. Though there might be some cases / configurations that make it less clear, not sure

@AdriaandeJongh
Copy link
Copy Markdown
Contributor

hey yeah sorry i was unclear! see the image below, an annotated screencap of my video above: i was talking about the nodes hidden at the red arrow, while you’re talking about the itens hidden by the orange arrow. i agree that the items hidden by the orange item are fine as the indentation plus the drop shadow are a clear giveaway. however, nothing indicates there are nodes in between Control and Control2, where the red arrow is.

IMG_0629

again, i’m still not sure if we could even fix or address this.

@dugramen
Copy link
Copy Markdown
Author

Ah that makes sense. Maybe it could add shadows there too. It might look weird if there's a lot of shadows, but I can try it

@AdriaandeJongh
Copy link
Copy Markdown
Contributor

adding another shadow will make it unclear where the scroll container starts, so that’s probably not gonna work… hmm yeah idk.

@AdriaandeJongh
Copy link
Copy Markdown
Contributor

I tried a few things like putting lines and icons in between but their either have to be extremely small making it unreadable, or it's still kind of unclear why there is a line in there all of a sudden. The best I could come up with was this simple line giving at least some indication of there being something in between.... but I'm not sure it's all that clarifying. What do you think?

555892863-eb7d63cc-0395-4c6d-95ab-02fa94f5b474

Copy link
Copy Markdown
Member

@KoBeWi KoBeWi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The implementation looks mostly alright.

Not a fan how it makes Tree even more complex (especially the longer parameter lists), but this class is already beyond saving 🤷‍♂️

Comment thread scene/gui/tree.h Outdated
Comment thread scene/gui/tree.h Outdated
Comment thread scene/gui/tree.cpp Outdated
Comment thread scene/gui/tree.cpp Outdated
Comment thread scene/gui/tree.cpp Outdated
@dugramen
Copy link
Copy Markdown
Author

dugramen commented Apr 19, 2026

@KoBeWi If it's any better, I can make those flags just members of the Tree itself, instead of extra parameters at the end

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch 3 times, most recently from 70b5e29 to e5d159b Compare April 20, 2026 22:11
@dugramen
Copy link
Copy Markdown
Author

Ok I pushed the suggested changes. I changed max_sticky_items to a theme_constant, to avoid editor code in Tree. I also added an extra check to make sure the sticky header size never exceeds 40% of the Tree's, which is the same as vscode

@KoBeWi
Copy link
Copy Markdown
Member

KoBeWi commented Apr 21, 2026

Crash:

================================================================
CrashHandlerException: Program crashed
Engine version: Godot Engine v4.7.dev.custom_build (3e4f5480689653e21433c9766e0643bf91c00e46)
Dumping the backtrace. Please include this when reporting the bug on: https://github.com/godotengine/godot/issues
Load address: 7ff673880000

[0] 7ff67859e4e7 (main+4d1e4e7) - CowData<TreeItem::Cell>::get (C:\godot_source\core\templates\cowdata.h:197)
[1] 7ff67849abeb (main+4c1abeb) - Vector<TreeItem::Cell>::operator[] (C:\godot_source\core\templates\vector.h:144)
[2] 7ff6782340e4 (main+49b40e4) - Tree::_find_item_at_pos (C:\godot_source\scene\gui\tree.cpp:6765)
[3] 7ff6782339c5 (main+49b39c5) - Tree::_find_item_at_pos (C:\godot_source\scene\gui\tree.cpp:6664)
[4] 7ff6782349f4 (main+49b49f4) - Tree::_find_button_at_pos (C:\godot_source\scene\gui\tree.cpp:6870)
[5] 7ff678235660 (main+49b5660) - Tree::_determine_hovered_item (C:\godot_source\scene\gui\tree.cpp:4415)
[6] 7ff678232ac9 (main+49b2ac9) - Tree::_scroll_moved (C:\godot_source\scene\gui\tree.cpp:6152)
[7] 7ff6783d88ca (main+4b588ca) - call_with_variant_args_helper<Tree,float,0> (C:\godot_source\core\variant\binder_common.h:59)
[8] 7ff6783a1724 (main+4b21724) - call_with_variant_args<Tree,float> (C:\godot_source\core\variant\binder_common.h:173)
[9] 7ff67850de61 (main+4c8de61) - CallableCustomMethodPointer<Tree,void,float>::call (C:\godot_source\core\object\callable_mp.h:103)
[10] 7ff679a99c90 (main+6219c90) - Callable::callp (C:\godot_source\core\variant\callable.cpp:58)
[11] 7ff679dc4448 (main+6544448) - Object::emit_signalp (C:\godot_source\core\object\object.cpp:1294)
[12] 7ff677613b33 (main+3d93b33) - Node::emit_signalp (C:\godot_source\scene\main\node.cpp:4187)
[13] 7ff676cdc4cb (main+345c4cb) - Object::emit_signal<double> (C:\godot_source\core\object\object.h:773)
[14] 7ff678000171 (main+4780171) - Range::_value_changed_notify (C:\godot_source\scene\gui\range.cpp:93)
[15] 7ff677fffdd2 (main+477fdd2) - Range::Shared::emit_value_changed (C:\godot_source\scene\gui\range.cpp:140)
[16] 7ff6780022e1 (main+47822e1) - Range::set_value (C:\godot_source\scene\gui\range.cpp:177)
[17] 7ff67800257c (main+478257c) - Range::set_max (C:\godot_source\scene\gui\range.cpp:242)
[18] 7ff678232fb1 (main+49b2fb1) - Tree::update_scrollbars (C:\godot_source\scene\gui\tree.cpp:4714)
[19] 7ff678252461 (main+49d2461) - Tree::scroll_to_item (C:\godot_source\scene\gui\tree.cpp:6467)
[20] 7ff675fd64ce (main+27564ce) - CreateDialog::select_type (C:\godot_source\editor\gui\create_dialog.cpp:679)
[21] 7ff675fd67f8 (main+27567f8) - CreateDialog::_item_selected (C:\godot_source\editor\gui\create_dialog.cpp:767)
[22] 7ff67601ea1c (main+279ea1c) - call_with_variant_args_helper<CreateDialog> (C:\godot_source\core\variant\binder_common.h:59)
[23] 7ff67601b962 (main+279b962) - call_with_variant_args<CreateDialog> (C:\godot_source\core\variant\binder_common.h:173)
[24] 7ff676044061 (main+27c4061) - CallableCustomMethodPointer<CreateDialog,void>::call (C:\godot_source\core\object\callable_mp.h:103)
[25] 7ff679a99c90 (main+6219c90) - Callable::callp (C:\godot_source\core\variant\callable.cpp:58)
[26] 7ff679dc4448 (main+6544448) - Object::emit_signalp (C:\godot_source\core\object\object.cpp:1294)
[27] 7ff677613b33 (main+3d93b33) - Node::emit_signalp (C:\godot_source\scene\main\node.cpp:4187)
[28] 7ff673c9f2c3 (main+41f2c3) - Object::emit_signal<> (C:\godot_source\core\object\object.h:773)
[29] 7ff67822ef28 (main+49aef28) - Tree::select_single_item (C:\godot_source\scene\gui\tree.cpp:3060)
[30] 7ff67822f26e (main+49af26e) - Tree::select_single_item (C:\godot_source\scene\gui\tree.cpp:3098)
[31] 7ff67822f26e (main+49af26e) - Tree::select_single_item (C:\godot_source\scene\gui\tree.cpp:3098)
[32] 7ff67822f26e (main+49af26e) - Tree::select_single_item (C:\godot_source\scene\gui\tree.cpp:3098)
[33] 7ff678232377 (main+49b2377) - Tree::item_selected (C:\godot_source\scene\gui\tree.cpp:5763)
[34] 7ff678216220 (main+4996220) - TreeItem::_cell_selected (C:\godot_source\scene\gui\tree.cpp:102)
[35] 7ff6782217b1 (main+49a17b1) - TreeItem::select (C:\godot_source\scene\gui\tree.cpp:1363)
[36] 7ff675fd64a2 (main+27564a2) - CreateDialog::select_type (C:\godot_source\editor\gui\create_dialog.cpp:679)
[37] 7ff675fd3328 (main+2753328) - CreateDialog::_update_search (C:\godot_source\editor\gui\create_dialog.cpp:335)
[38] 7ff675fd6402 (main+2756402) - CreateDialog::_text_changed (C:\godot_source\editor\gui\create_dialog.cpp:609)
[39] 7ff67601eb60 (main+279eb60) - call_with_variant_args_helper<CreateDialog,String const &,0> (C:\godot_source\core\variant\binder_common.h:59)
[40] 7ff67601baa4 (main+279baa4) - call_with_variant_args<CreateDialog,String const &> (C:\godot_source\core\variant\binder_common.h:173)
[41] 7ff6760442a1 (main+27c42a1) - CallableCustomMethodPointer<CreateDialog,void,String const &>::call (C:\godot_source\core\object\callable_mp.h:103)
[42] 7ff679a99c90 (main+6219c90) - Callable::callp (C:\godot_source\core\variant\callable.cpp:58)
[43] 7ff679dc4448 (main+6544448) - Object::emit_signalp (C:\godot_source\core\object\object.cpp:1294)
[44] 7ff677613b33 (main+3d93b33) - Node::emit_signalp (C:\godot_source\scene\main\node.cpp:4187)
[45] 7ff674e11599 (main+1591599) - Object::emit_signal<String> (C:\godot_source\core\object\object.h:773)
[46] 7ff6780edbe4 (main+486dbe4) - LineEdit::_emit_text_change (C:\godot_source\scene\gui\line_edit.cpp:3081)
[47] 7ff6780edb73 (main+486db73) - LineEdit::_text_changed (C:\godot_source\scene\gui\line_edit.cpp:3077)
[48] 7ff67601fa6c (main+279fa6c) - call_with_variant_args_helper<LineEdit> (C:\godot_source\core\variant\binder_common.h:59)
[49] 7ff67601d1c2 (main+279d1c2) - call_with_variant_args<LineEdit> (C:\godot_source\core\variant\binder_common.h:173)
[50] 7ff676046d71 (main+27c6d71) - CallableCustomMethodPointer<LineEdit,void>::call (C:\godot_source\core\object\callable_mp.h:103)
[51] 7ff679a99c90 (main+6219c90) - Callable::callp (C:\godot_source\core\variant\callable.cpp:58)
[52] 7ff679de34bb (main+65634bb) - CallQueue::_call_function (C:\godot_source\core\object\message_queue.cpp:218)
[53] 7ff679de4cac (main+6564cac) - CallQueue::flush (C:\godot_source\core\object\message_queue.cpp:266)
[54] 7ff677637662 (main+3db7662) - SceneTree::process (C:\godot_source\scene\main\scene_tree.cpp:717)
[55] 7ff67398744e (main+10744e) - Main::iteration (C:\godot_source\main\main.cpp:5037)
[56] 7ff6738c4ba6 (main+44ba6) - OS_Windows::run (C:\godot_source\platform\windows\os_windows.cpp:2354)
[57] 7ff6739447f9 (main+c47f9) - widechar_main (C:\godot_source\platform\windows\godot_windows.cpp:98)
[58] 7ff6739448f3 (main+c48f3) - _main (C:\godot_source\platform\windows\godot_windows.cpp:125)
[59] 7ff673944932 (main+c4932) - main (C:\godot_source\platform\windows\godot_windows.cpp:139)
[60] 7ff67394450d (main+c450d) - WinMain (C:\godot_source\platform\windows\godot_windows.cpp:153)
[61] 7ff67a8e1ab6 (main+7061ab6) - __scrt_common_main_seh (D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
[62] 7ff6738b6d6a (main+36d6a) - ShimMainCRTStartup (C:\godot_source\platform\windows\cpu_feature_validation.c:74)
[63] 7ffa54aa7374 (kernel32.dll+17374) - <couldn't map PC to fn name>
-- END OF C++ BACKTRACE --

Search in CreateDialog while mouse is near the top of the Tree.

Comment thread editor/settings/editor_settings.cpp Outdated
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/docks/dock_tab_style", 0, "Text Only,Icon Only,Text and Icon")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/docks/bottom_dock_tab_style", 0, "Text Only,Icon Only,Text and Icon")
EDITOR_SETTING_USAGE(Variant::INT, PROPERTY_HINT_ENUM, "interface/editor/localization/ui_layout_direction", 0, "Based on Application Locale,Left-to-Right,Right-to-Left,Based on System Locale", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED)
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/max_sticky_tree_items", 6, "0,16")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needs to be in some sub-group, e.g.

Suggested change
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/max_sticky_tree_items", 6, "0,16")
EDITOR_SETTING_BASIC(Variant::INT, PROPERTY_HINT_RANGE, "interface/editor/appearance/max_sticky_tree_items", 6, "0,16")

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from e5d159b to 6b5dbe5 Compare April 21, 2026 19:31
Comment thread doc/classes/EditorSettings.xml Outdated
"name": "category/property_name",
"type": TYPE_INT,
"hint": PROPERTY_HINT_ENUM,
"hint_string": "one,two,three"
Copy link
Copy Markdown
Member

@AThousandShips AThousandShips Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These changes are unrelated and incorrect, please restore

Why did you make these?

Comment thread doc/classes/EditorSettings.xml Outdated
{ "name", "category/propertyName" },
{ "type", Variant.Type.Int },
{ "hint", PropertyHint.Enum },
{ "hint_string", "one,two,three" },
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

Comment thread doc/classes/EditorSettings.xml Outdated
[codeblock]
func untyped(param):
param.print() # Will resolve to the global print method for e.g. hover hints.
param.print() # Will resolve to the global print method for e.g. hover hints.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same here

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how these happened. I'll check. (Ignore the latest push, that was to fix merge conflicts)

Copy link
Copy Markdown
Member

@AThousandShips AThousandShips Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You didn't notice when you added changes to the commit? Are you using some tools or AI to make changes? These kinds of changes don't just happen

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No I'm using visual studio. Maybe I accidentally formatted it and it did that. And visual studio isn't showing changes for spaces so I didn't notice

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's what I meant by tools, good to turn that off, but it shouldn't do that anyway, but good to turn off as it seems to not work

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from 6b5dbe5 to 24d782b Compare April 21, 2026 19:35
@AThousandShips
Copy link
Copy Markdown
Member

Also this PR is made using a different account so you're not linked to your GitHub profile, you'll need to fix your commit author

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from 24d782b to dc9c0be Compare April 21, 2026 19:55
@dugramen
Copy link
Copy Markdown
Author

Ok I pushed it again. Also is the commit author fixed, I'm not sure where it shows that here

@AThousandShips
Copy link
Copy Markdown
Member

It previously had no icon and listed this PR as "first time contributor"

@dugramen
Copy link
Copy Markdown
Author

Oh ok thanks. I updated visual studio recently, maybe that messed some stuff up

@AThousandShips
Copy link
Copy Markdown
Member

Turns out this was actually the account you made all your previous contributions with, and it's "invalid", i.e. it's not actually linked to your GitHub profile, so you're still a first time contributor, this being merged would make you count as a contributor (no contributions to this repo has been counted because you didn't use a proper account to sign the commit)

@dugramen
Copy link
Copy Markdown
Author

Lol a lot of weirdness going on today. Thanks for letting me know, and sorry for the trouble

@dugramen
Copy link
Copy Markdown
Author

It seems #118733 added a new canvas item stylebox_ci, introducing buggy visuals in this PR. I'll have to fix it in the morning

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from dc9c0be to f0fcfd2 Compare April 22, 2026 17:25
@dugramen
Copy link
Copy Markdown
Author

Ok bugs should be fixed now

@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from f0fcfd2 to 6211f83 Compare April 22, 2026 17:41
@KoBeWi
Copy link
Copy Markdown
Member

KoBeWi commented Apr 22, 2026

Some glitched overlap

image
godot.windows.editor.dev.x86_64_FDmVCY5xAM.mp4

Copy link
Copy Markdown
Member

@KoBeWi KoBeWi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than the above (which is a minor thing tbh) looks fine.

@KoBeWi KoBeWi modified the milestones: 4.x, 4.8 Apr 22, 2026
@dugramen dugramen force-pushed the sticky-tree-canvas-item branch from 6211f83 to 452783c Compare April 22, 2026 18:11
@dugramen
Copy link
Copy Markdown
Author

That should fix it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Merge Ready

Development

Successfully merging this pull request may close these issues.